(* Content-type: application/mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Mathematica 7.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       145,          7]
NotebookDataLength[     58281,       1509]
NotebookOptionsPosition[     52407,       1323]
NotebookOutlinePosition[     53110,       1350]
CellTagsIndexPosition[     53030,       1345]
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{

Cell[CellGroupData[{
Cell["Microarray Gene Expression Analysis", "Title",
 CellChangeTimes->{{3.4448837771488934`*^9, 3.444883784562468*^9}}],

Cell["Data Access and Data Normalization", "Subtitle",
 CellChangeTimes->{{3.444883789132296*^9, 3.4448838210671864`*^9}, {
  3.445391003309511*^9, 3.445391011770507*^9}}],

Cell["Hans - Martin Will, Ph.D.", "Subsubtitle"],

Cell[TextData[{
 "Copyright \[Copyright] 2009 Hans-Martin Will. This notebook is licensed \
under the ",
 ButtonBox["Creative Commons Attribution 3.0 License",
  BaseStyle->"Hyperlink",
  ButtonData->{
    URL["http://creativecommons.org/licenses/by/3.0"], None},
  ButtonNote->"http://creativecommons.org/licenses/by/3.0"],
 ". This notebook contains content reproduced from the NCBI web site ",
 ButtonBox["in accordance to the published usage guidelines",
  BaseStyle->"Hyperlink",
  ButtonData->{
    URL["http://www.ncbi.nlm.nih.gov/projects/geo/info/disclaimer.html"], 
    None},
  ButtonNote->"http://www.ncbi.nlm.nih.gov/projects/geo/info/disclaimer.html"],
 ". Distributions of this notebook in modified or unmodified form need to \
include this notice."
}], "Text",
 CellChangeTimes->{{3.444885583784873*^9, 3.44488571568578*^9}, 
   3.444885750604946*^9, {3.4448857808997927`*^9, 3.444885794228957*^9}, {
   3.444885849778867*^9, 3.444885895263208*^9}, {3.444885988618767*^9, 
   3.444886023721356*^9}, {3.444886679102549*^9, 3.4448867925795593`*^9}, {
   3.444886828004525*^9, 3.444886879056986*^9}, {3.4448869480613832`*^9, 
   3.44488696792741*^9}, {3.445135694625877*^9, 3.445135722559115*^9}, {
   3.445228305643272*^9, 3.445228330267249*^9}},
 FontWeight->"Bold"],

Cell[BoxData[
 GraphicsBox[
  TagBox[RasterBox[CompressedData["
1:eJztmU1PG1cUhi11HcSeRcku7GirdJlaSn8A7aqbVCh/IFF3kaiCIhIpUiVk
OYraRUOl7krAxubDX9gG2/hjbI8HQrb8BH6C+8yc+DDYxgzWGLtKj8bSzJ07
d+a+877vOXd89/GTHx9/EQgEvuT3Ez97v91uBz77UBB2Utt7md1kNpE5SGcL
2YNSvlApHNVKlXq52qgazVrdNOqtur2ZhmHWao0qp+hQrBTonCtkuTCZTTII
Q8UTsa29aHQnsrm9sRF/z/Y+tr6+9c9kboqGgJDKJfcPM/lirlA+ZILVRoX5
Nq1G68S0PrSOT49PPtobO9YHi0ZOGaZBNzpzSb6U43IGcUMR2dkUKMBh8qG4
AKGU5/2WjTIEYJpMf+XlysPvH96ZuuNmEYc0rrxaoUPzuAlccKNYLUKM/cN9
hSKW2IruRmwo4hvDUeLZ0rO5uTn3rTmkcUQ4IAcFgRnVWwavOxQOzczMDJYV
HUJvQnRGLxCj9AmKjAhkOxmP7dlQDEGJ8O/he3P35C7BYPCpE+xIC6fo4DsO
SBs5dECo85YXfljQyU5PTy8uLi4vL+ecYIdDGrUDnYvlQsOyoYAVCMTxisRu
eudCHTehxNrf76ampuyRFxbOzs7aruCQRk7RwUcoZCIYIwJHDjDBDQKTZdbn
5+ftfrG2tqZo8IKAAgxBkqGwzXQ+ldjfs9VxmRJenkqYANp6L3V1vbXc1F8c
IDNehyfAcAVhfn6+6130BhDRTVnB5XgFQ3XU0aHEbjSyvelRGshfmPDx9PQq
HAhhhV9eIeMXbEVUMEY8QUG4igYDoMArsE1bHZVCrmhTwnaJlO0SIg0vOIgx
XvsK6CC26SMONhnMGooQY4Ttpml6AUGhEIFwOYOQTIUSmQObEpo4PEpDjNE9
PgKR53QrhRDb9BEHRN2wGqRIOcQTvIMgIYIlSKbwSlwi6+RQlYZ3HEgN7sHd
GcrdTjd/caBiNE9MSgIhgyqC7IAMg04oOO7G1dVVfSqhBIPgElSbl6SRjNtZ
o2MRE4sDDgmfpVhS7jHfwOVg4pFIpKtR+wt7GYRqE5WVnASazqfJGliEZM8J
1wVLhuNTS/b1FYv7zc7O4khgwg7kl0ZJJWAijV3SoPCuX1hEWrOnRxz6+mQv
GUbhk5QNLBxknym7b93lFQMMRPnDUBQSR7Wj4XDQvDkYh1HkzYnCYd1DHSXO
4HsdNVgX2CZplB2mr7pwN/qri/Xx1dV9fbKvJQ7wSXlHjk+2GHBon1QodJ0F
7NyF8bVgG9E6S/KmVNSkPzfVe/MmUAQ74RYI3Ah08ma1kzdTuRvnTfd2y+tu
qaO0qHZXBR6jt446dOooFuBSR910qXXLmzx8qdpdV19b3rvD37p6jDjoOuvd
X3+qJIdZZ4VDDMI6iwFl6a1fY7yvs8aIA7H0fEnW3Y9+fqRQXLvagjbd6+5m
7cXLF4H/cjz95Qn5ruXtOwyNnNLvMPe/vY8iqEPAc3wz8C1+fb5ECQQUyoqA
t+9ygNBo1d/+8dbHh1HM9dB9yscb9Q0bCtP+TotXePpOG5bvtIa/IARck+3a
uQUQJBCIfrdnmld9tw+9Cdnf7a0GnUchhy4+aKPvNxoQX3/zVSQWIZlSV5if
/sexOv/jWBzq/zjReOTBdw9G8QzjUkRvMMHXv73O5DOd//WczTQ4pJFTI0JA
YhL48BnG/wgHHBD+BZWSnD0=
    "], {{0, 31}, {88, 0}}, {0, 255},
    ColorFunction->RGBColor],
   BoxForm`ImageTag["Byte", ColorSpace -> "RGB", Interleaving -> True],
   Selectable->False],
  BaseStyle->"ImageGraphics",
  ImageSize->Automatic,
  ImageSizeRaw->{88, 31},
  PlotRange->{{0, 88}, {0, 31}}]], "Text"],

Cell[CellGroupData[{

Cell["Introduction", "Section",
 CellChangeTimes->{{3.444452911443905*^9, 3.4444529126249113`*^9}, {
  3.444453002881036*^9, 3.444453009109371*^9}, {3.4444531720085497`*^9, 
  3.44445317619203*^9}}],

Cell[CellGroupData[{

Cell["Gene Expression Microarrays", "Subsection",
 CellChangeTimes->{{3.4452284697091217`*^9, 3.445228482800082*^9}}],

Cell["\<\
DNA Microarrays organize DNA oligonucleotides in a spatial arrangement on a \
small glass plate, plastic or silicon substrate. Microarrays can contain up \
to millions of probes, and can be used to perform many genetic or genomic \
tests in parallel. The use of microarrays for gene expression propfiles was \
first reported by Schena at al. (1995), and the representation of a complete \
eukaryotic genome (Saccharomyces cerevisiae) on a microarray was reported by \
Lashkari et al. (1997).\
\>", "Text",
 CellChangeTimes->{{3.444887353346092*^9, 3.444887363050329*^9}, {
  3.44488741517548*^9, 3.44488744377776*^9}, {3.4448874788086863`*^9, 
  3.4448877124559107`*^9}}],

Cell["\<\
For gene expression profiling experiments, the expression levels of thousands \
of gene transcripts are simultaneously monitored to study and determine the \
effects of treatments, disease conditions or developmental conditions. For \
example, gene expression profiling can be used to identify genes whose \
expression is changed when exposed to toxicants or genes expression \
differently in tumor cells and cancer cell lines in comparison to non-tumor \
tissue. \
\>", "Text",
 CellChangeTimes->{{3.4448877585607033`*^9, 3.444887985660445*^9}}],

Cell["\<\
A major design criterion for manufactoring microarrays is the choice between \
single-channel and two-channel arrays. Single-channel arrays are designed to \
measure estimates of absolute abundance of transcript expression. For \
single-channel arrays, a single sample preparation is hybridized to the \
array. For comparative analysis across conditions, expression levels need to \
be compared between data points collected from multiple arrays. Common \
commercial single-channel arrays are those manufactored and distributed by \
Affymetrix \"Gene Chip\", the Applied Microarrays \"CodeLink\" arrays, and \
the Eppendorf \"DualChip & Silverquant\". \
\>", "Text",
 CellChangeTimes->{{3.4448880180829897`*^9, 3.444888260869218*^9}, {
  3.444888301776121*^9, 3.444888349899485*^9}, {3.444888603426197*^9, 
  3.4448886074266253`*^9}}],

Cell["\<\
When using dual-channel arrays, cDNA prepared from two different samples is \
first labeled with different fluorescent dyes before being hybridized to the \
array. Common dyes are Cy3 with a fluorescence emission wavelength of 570 nm \
(green part of the light spectrum), and Cy5 with an emission wavelength of \
670 nm (red part of the light spectrum). The relative intensities of each \
fluorophore can then be used to perform ratio-based analysis to identify \
genes with different expression levels in the two samples.\
\>", "Text",
 CellChangeTimes->{{3.444888336265398*^9, 3.444888582753827*^9}}]
}, Open  ]],

Cell[CellGroupData[{

Cell["Lung Cancer Data Set", "Subsection",
 CellChangeTimes->{{3.445228498389434*^9, 3.4452285023921947`*^9}}],

Cell[TextData[{
 "For our computational example we will use helper functions from the \
Bioinformatica package. As data set, we will use a data set discussed by \
Raponi et al. (2006), which has been deposited in the NCBI GEO data \
repository under accession code GDS2373. In this study, primary squamous cell \
lung carcinomas from 129 patients have been profiled using Affymetrix U133A \
gene chips. Non-small-cell lung cancers (NSCLC) compose 80% of all lung \
carcinomas with squamous cell carcinomas (SCC), and adenocarcinoma are \
representing the majority of these tumors. These data is of interest because \
a prognostic signature could be used to identify patients with early-stage \
high-risk NSCLC who might benefit from adjuvant therapy following surgery. In \
this first tutorial, we will be more concerned with the overall workflow of \
an analysis of microarrays using ",
 StyleBox["Mathematica",
  FontSlant->"Italic"],
 " rather than focusing on the most advisable statistical approaches. Those \
more advanced discussions might be the focus of specialized tutorials at a \
later stage. "
}], "Text",
 CellChangeTimes->{{3.4451679609001017`*^9, 3.4451679937817497`*^9}, {
  3.445168024196751*^9, 3.445168024914763*^9}, {3.445168086468685*^9, 
  3.4451681136165743`*^9}, {3.4451683264976883`*^9, 3.445168371253716*^9}, {
  3.445168675471032*^9, 3.4451686848692408`*^9}, {3.445168829705173*^9, 
  3.445168863678011*^9}, {3.4451688958378773`*^9, 3.445168935909285*^9}, {
  3.445168974416506*^9, 3.44516897847499*^9}, {3.445228520174803*^9, 
  3.445228520521166*^9}}]
}, Open  ]],

Cell[CellGroupData[{

Cell["Accessing the Bioinformatica Package", "Subsection",
 CellChangeTimes->{{3.445228523247863*^9, 3.445228533927959*^9}}],

Cell[TextData[{
 "Throughout this tutorial we will make use of a small package called ",
 StyleBox["Bioinformatica`",
  FontWeight->"Bold"],
 " containing useful bioinformatics helper functions."
}], "Text",
 CellChangeTimes->{{3.445224988580904*^9, 3.445225082579658*^9}, {
   3.4452283658901043`*^9, 3.4452284581917267`*^9}, 3.445228517079393*^9}],

Cell[BoxData[
 RowBox[{"<<", "Bioinformatica`"}]], "Input",
 CellChangeTimes->{{3.445134528978896*^9, 3.445134556239543*^9}, {
  3.445136013849811*^9, 3.445136015415406*^9}, {3.445167942995329*^9, 
  3.4451679471910343`*^9}}]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell["Importing Data in SOFT Format", "Section",
 CellChangeTimes->{{3.444883858361223*^9, 3.444883872564981*^9}}],

Cell[CellGroupData[{

Cell["What is GEO?", "Subsection",
 CellChangeTimes->{{3.44488503809445*^9, 3.444885041867712*^9}, {
  3.444919417545856*^9, 3.4449194237389517`*^9}}],

Cell[TextData[{
 "GEO (Gene Expression Omnibus) is a public repository for gene expression \
data sets hosted by the NCBI (National Center for Biotechnology Information). \
It can be accessed on the Internet at ",
 ButtonBox["http://www.ncbi.nlm.nih.gov/geo/",
  BaseStyle->"Hyperlink",
  ButtonData->{
    URL["http://www.ncbi.nlm.nih.gov/geo/"], None},
  ButtonNote->"http://www.ncbi.nlm.nih.gov/geo/"],
 ". GEO contains single and dual channel microarray data measuring  mRNA, \
miRNA, genomic DNA (arrayCGH, ChIP-chip, and SNP), and protein abundance. In \
addition to the core data types, GEO can also store data generated using \
non-array techniques such as serial analysis of gene expression (SAGE), mass \
spectrometry peptide profiling, and various types of quantitative sequence \
data."
}], "Text",
 CellChangeTimes->{{3.444884018978778*^9, 3.444884170366518*^9}, {
   3.444884209556929*^9, 3.444884280210013*^9}, {3.444884325494581*^9, 
   3.4448843682933893`*^9}, {3.444884494448762*^9, 3.444884544060622*^9}, 
   3.444884583366193*^9, {3.444884677423909*^9, 3.444884822928441*^9}, {
   3.444885035725675*^9, 3.444885037068593*^9}}],

Cell["\<\
GEO requires data sets to be annoted following the MIAME (Minimal Information \
About a Microarray Experiment) guidelines [Brazma et al. (2001)], which have \
been put forth by the MGED consortium. \
\>", "Text",
 CellChangeTimes->{{3.444884018978778*^9, 3.444884170366518*^9}, {
   3.444884209556929*^9, 3.444884280210013*^9}, {3.444884325494581*^9, 
   3.4448843682933893`*^9}, {3.444884494448762*^9, 3.444884544060622*^9}, 
   3.444884583366193*^9, {3.444884677423909*^9, 3.4448848262781677`*^9}}]
}, Open  ]],

Cell[CellGroupData[{

Cell["Data Organization in GEO", "Subsection",
 CellChangeTimes->{{3.444884996259863*^9, 3.444884999797144*^9}, {
  3.444919411684183*^9, 3.4449194131692047`*^9}}],

Cell["\<\
GEO captured data around the primary records of Platform, Samples and Series. \
Those primary records get rendered into secondary records representing \
DataSets and gene Profiles. \
\>", "Text",
 CellChangeTimes->{{3.4448850566901913`*^9, 3.444885170968219*^9}, {
  3.4448862677141533`*^9, 3.444886342911726*^9}, {3.444886761189879*^9, 
  3.4448867728285847`*^9}}],

Cell[CellGroupData[{

Cell["Platform", "Subsubsection",
 CellChangeTimes->{{3.444885174716371*^9, 3.444885175972432*^9}}],

Cell[TextData[{
 "A ",
 StyleBox["Platform",
  FontWeight->"Bold"],
 " record defines the list of elements that may be detected and quantified in \
that experiment (e.g., cDNAs, oligonucleotide probesets). "
}], "Text",
 CellChangeTimes->{{3.4448851809928417`*^9, 3.444885181580447*^9}, 
   3.444886127354581*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell["Sample", "Subsubsection",
 CellChangeTimes->{{3.444885184248901*^9, 3.4448852118083687`*^9}}],

Cell[TextData[{
 "A ",
 StyleBox["Sample",
  FontWeight->"Bold"],
 " record describes the conditions under which an individual ",
 StyleBox["Sample",
  FontWeight->"Bold"],
 " was handled, the manipulations it underwent, and the abundance measurement \
of each element derived from it."
}], "Text",
 CellChangeTimes->{{3.444885186535282*^9, 3.4448851871085463`*^9}, 
   3.444886100325614*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell["Series", "Subsubsection",
 CellChangeTimes->{{3.444885262275939*^9, 3.444885263265274*^9}}],

Cell[TextData[{
 "A ",
 StyleBox["Series",
  FontWeight->"Bold"],
 " record links together a group of related ",
 StyleBox["Sample",
  FontWeight->"Bold"],
 "s and provides a focal point and description of the whole study. ",
 StyleBox["Series",
  FontWeight->"Bold"],
 " records may also contain tables describing extracted data, summary \
conclusions, or analyses."
}], "Text",
 CellChangeTimes->{{3.444885265748872*^9, 3.444885266253598*^9}, 
   3.444886114107437*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell["Series", "Subsubsection",
 CellChangeTimes->{{3.444885188806572*^9, 3.444885189645396*^9}}],

Cell["Blah", "Text",
 CellChangeTimes->{{3.444885190758829*^9, 3.4448851912981243`*^9}}]
}, {3}]],

Cell[CellGroupData[{

Cell["DataSet", "Subsubsection",
 CellChangeTimes->{{3.444885195199663*^9, 3.444885196238038*^9}}],

Cell[TextData[{
 "A ",
 StyleBox["DataSet",
  FontWeight->"Bold"],
 " represents a curated collection of biologically and statistically \
comparable GEO ",
 StyleBox["Sample",
  FontWeight->"Bold"],
 "s and forms the basis of GEO's suite of data display and analysis tools. \
Value measurements for each ",
 StyleBox["Sample",
  FontWeight->"Bold"],
 " within a ",
 StyleBox["DataSet",
  FontWeight->"Bold"],
 " are assumed to be calculated in an equivalent manner, that is, \
considerations such as background processing and normalization are consistent \
across the ",
 StyleBox["DataSet",
  FontWeight->"Bold"],
 ". Information reflecting experimental factors is provided through ",
 StyleBox["Subset",
  FontWeight->"Bold"],
 "s. DataSets reference an origniating ",
 StyleBox["Database",
  FontWeight->"Bold"],
 " for traceability."
}], "Text",
 CellChangeTimes->{{3.444885197519611*^9, 3.444885198091619*^9}, 
   3.4448861999293118`*^9, 3.444886231464694*^9, {3.444922016831312*^9, 
   3.4449220727600946`*^9}, {3.4449221218404417`*^9, 3.444922141199295*^9}}]
}, Open  ]],

Cell[CellGroupData[{

Cell["Profile", "Subsubsection",
 CellChangeTimes->{{3.444885200308385*^9, 3.444885201431027*^9}}],

Cell[TextData[{
 "A ",
 StyleBox["Profile",
  FontWeight->"Bold"],
 " consists of the expression measurements for an individual gene across all ",
 StyleBox["Samples",
  FontWeight->"Bold"],
 " in a ",
 StyleBox["DataSet",
  FontWeight->"Bold"],
 "."
}], "Text",
 CellChangeTimes->{{3.444885204197846*^9, 3.4448852048867073`*^9}, 
   3.444886142529993*^9, 3.4451326919766006`*^9}],

Cell["\<\
GEO provides data downloads in SOFT (Simple Omnibus Format in Text) and \
MiniML (Minimal xML) formats. SOFT is a simple line-based, plain text format, \
meaning that SOFT files may be readily generated from common spreadsheet and \
database applications. A single SOFT file can hold both data tables and \
accompanying descriptive information for multiple, concatenated Platforms, \
Samples, and/or Series records. \
\>", "Text",
 CellChangeTimes->{{3.444886513522657*^9, 3.444886542337809*^9}, {
  3.4448865907869473`*^9, 3.4448866372662354`*^9}}]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell["Importing SOFT Files", "Subsection",
 CellChangeTimes->{{3.444949328580954*^9, 3.444949334042605*^9}, {
  3.445169177843726*^9, 3.445169179056456*^9}}],

Cell[TextData[{
 "We are going to use the ",
 StyleBox["ReadSOFT[]",
  FontWeight->"Bold"],
 " function from the Bioinformatica package to access our gene expression \
data."
}], "Text",
 CellChangeTimes->{{3.445169182815097*^9, 3.4451692163984947`*^9}, {
  3.445169798287105*^9, 3.445169810645599*^9}, {3.445169861365712*^9, 
  3.4451698797071247`*^9}}],

Cell[BoxData[
 RowBox[{"?", "Bioinformatica`ReadSOFT"}]], "Input",
 CellChangeTimes->{{3.445169813209454*^9, 3.445169843295192*^9}}],

Cell[TextData[{
 "We first need to download the data set from the NCBI GEO web site. The data \
set has accession code ",
 StyleBox["GDS2373",
  FontWeight->"Bold"],
 " and can be accessed via the URL  ",
 ButtonBox["http://www.ncbi.nlm.nih.gov/sites/GDSbrowser?acc=GDS2373",
  BaseStyle->"Hyperlink",
  ButtonData->{
    URL["http://www.ncbi.nlm.nih.gov/sites/GDSbrowser?acc=GDS2373"], None},
  ButtonNote->"http://www.ncbi.nlm.nih.gov/sites/GDSbrowser?acc=GDS2373"],
 ". After downloading the DataSet SOFT file, we can load it using ",
 StyleBox["ReadSOFT[]",
  FontWeight->"Bold"],
 ". In our case, we have been downloading the file to our ",
 StyleBox["Desktop/",
  FontSlant->"Italic"],
 " folder, which we are specifying as part of the file name."
}], "Text",
 CellChangeTimes->{{3.445169892187269*^9, 3.445169915529744*^9}, {
  3.445169987840502*^9, 3.4451700774120293`*^9}, {3.44517013233461*^9, 
  3.445170246096445*^9}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"data", " ", "=", " ", 
   RowBox[{"ReadSOFT", "[", "\"\<Desktop/GDS2373.soft\>\"", "]"}]}], 
  ";"}]], "Input",
 CellChangeTimes->{{3.444949661586068*^9, 3.444949681280016*^9}, {
  3.4449497602659883`*^9, 3.444949762270001*^9}, {3.4450873836819696`*^9, 
  3.44508741039117*^9}}],

Cell["\<\
We can access data set properties using the appropriate attribute names. \
Let's verify the name, description and dimensions of the data set we just \
loaded.\
\>", "Text",
 CellChangeTimes->{{3.445170405448627*^9, 3.445170469147902*^9}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"{", "\[IndentingNewLine]", 
   RowBox[{
    RowBox[{"data", "[", 
     RowBox[{"\"\<datasetTitle\>\"", ",", " ", "\"\<GDS2373\>\""}], "]"}], 
    ",", "\[IndentingNewLine]", 
    RowBox[{"data", "[", 
     RowBox[{"\"\<datasetDescription\>\"", ",", " ", "\"\<GDS2373\>\""}], 
     "]"}], ",", "\[IndentingNewLine]", 
    RowBox[{"data", "[", 
     RowBox[{"\"\<datasetSampleCount\>\"", ",", " ", "\"\<GDS2373\>\""}], 
     "]"}], ",", "\[IndentingNewLine]", 
    RowBox[{"data", "[", 
     RowBox[{"\"\<datasetFeatureCount\>\"", ",", " ", "\"\<GDS2373\>\""}], 
     "]"}]}], "\[IndentingNewLine]", "}"}], " ", "//", " ", 
  "TableForm"}]], "Input",
 CellChangeTimes->{{3.4451305027526417`*^9, 3.445130510247787*^9}, {
   3.445170278306837*^9, 3.445170305080207*^9}, {3.445170349042055*^9, 
   3.44517040029359*^9}, {3.4455617541369047`*^9, 3.44556178737351*^9}, {
   3.445562340911458*^9, 3.445562344299943*^9}, 3.445565258740991*^9}],

Cell[TextData[{
 "The actual matrix of gene expression measurements can be accessed using the \
",
 StyleBox["\"datasetTable\"",
  FontSlant->"Italic"],
 " attribute. This matrix has a row for each sample, and a column for each \
probe set representing a specific gene."
}], "Text",
 CellChangeTimes->{{3.44517096882232*^9, 3.445171005649639*^9}, {
  3.4451710363427*^9, 3.445171061637521*^9}},
 FontWeight->"Plain"],

Cell[BoxData[
 RowBox[{
  RowBox[{"matrix", " ", "=", " ", 
   RowBox[{"data", "[", 
    RowBox[{"\"\<datasetTable\>\"", ",", " ", "\"\<GDS2373\>\""}], "]"}]}], 
  ";"}]], "Input",
 CellChangeTimes->{{3.445129074223572*^9, 3.445129075885895*^9}, {
   3.445171088865137*^9, 3.4451710965928783`*^9}, 3.4453088869870567`*^9}],

Cell["\<\
The first row of this matrix contains the probe set identifiers.\
\>", "Text",
 CellChangeTimes->{{3.445171137643532*^9, 3.445171153777363*^9}, {
  3.445565870180204*^9, 3.445565870553226*^9}}],

Cell[BoxData[
 RowBox[{"affyIDs", " ", "=", " ", 
  RowBox[{
   RowBox[{"Transpose", "[", "matrix", "]"}], "\[LeftDoubleBracket]", "1", 
   "\[RightDoubleBracket]"}]}]], "Input",
 CellChangeTimes->{{3.445060133330824*^9, 3.4450601466605253`*^9}, {
  3.445171175121686*^9, 3.445171201999352*^9}}],

Cell["\<\
The second column of the data matrix contains the corresponding gene symbols.\
\
\>", "Text",
 CellChangeTimes->{{3.4451712134145823`*^9, 3.445171232902623*^9}}],

Cell[BoxData[
 RowBox[{"geneIDs", " ", "=", " ", 
  RowBox[{
   RowBox[{"Transpose", "[", "matrix", "]"}], "\[LeftDoubleBracket]", "2", 
   "\[RightDoubleBracket]"}]}]], "Input",
 CellChangeTimes->{{3.445060073400189*^9, 3.445060092651363*^9}, {
  3.445087666833976*^9, 3.4450876842379*^9}, {3.445171249439616*^9, 
  3.445171260621463*^9}}],

Cell["\<\
As we can see, several of the probe sets are actually marked as control \
probes. We extract the data matrix without those control data using\
\>", "Text",
 CellChangeTimes->{{3.445308643261846*^9, 3.445308679797114*^9}, {
  3.44530896938739*^9, 3.445308986081551*^9}}],

Cell[BoxData[{
 RowBox[{
  RowBox[{"matrix", " ", "=", " ", 
   RowBox[{"Select", "[", 
    RowBox[{"matrix", ",", " ", 
     RowBox[{
      RowBox[{
       RowBox[{"#", "\[LeftDoubleBracket]", "2", "\[RightDoubleBracket]"}], 
       " ", "\[NotEqual]", " ", "\"\<--Control\>\""}], "&"}]}], "]"}]}], 
  ";"}], "\[IndentingNewLine]", 
 RowBox[{"geneIDs", " ", "=", " ", 
  RowBox[{
   RowBox[{"Transpose", "[", "matrix", "]"}], "\[LeftDoubleBracket]", "2", 
   "\[RightDoubleBracket]"}]}]}], "Input",
 CellChangeTimes->{{3.44530874828233*^9, 3.445308854509939*^9}, {
  3.4453089159366217`*^9, 3.445308920575941*^9}}],

Cell[TextData[{
 "Mathematica 7 contains functions to access annotation information around \
the human genome, which can be accessed using the GenomeData[] function. We \
can use this function to translate gene symbols to gene names, for example. \
Depending on your setup, the following operation could take a little in case ",
 StyleBox["Mathematica",
  FontSlant->"Italic"],
 " needs to refresh its local cache and index for gene annotation."
}], "Text",
 CellChangeTimes->{{3.445171284497828*^9, 3.4451713626127987`*^9}, {
  3.4451714701492577`*^9, 3.4451715208165216`*^9}}],

Cell[BoxData[
 RowBox[{"geneNames", " ", "=", " ", 
  RowBox[{
   RowBox[{
    RowBox[{"GenomeData", "[", 
     RowBox[{"#", ",", " ", "\"\<Name\>\""}], "]"}], "&"}], " ", "/@", " ", 
   "geneIDs"}]}]], "Input",
 CellChangeTimes->{{3.445063284330495*^9, 3.445063315939969*^9}, {
  3.445063379828343*^9, 3.445063387082695*^9}, {3.44531091236172*^9, 
  3.445310914867894*^9}}],

Cell["\<\
We also want to capture the names of the samples corresponding to the \
individual rows of our data matrix. The first two columns correspond to the \
probe set identifier and gene symbol, which we drop.\
\>", "Text",
 CellChangeTimes->{{3.4455692908045073`*^9, 3.445569359953578*^9}, {
  3.4455714912877197`*^9, 3.445571522589819*^9}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"sampleIDs", " ", "=", " ", 
   RowBox[{"Drop", "[", 
    RowBox[{
     RowBox[{"data", "[", 
      RowBox[{"\"\<datasetTableHeader\>\"", ",", " ", "\"\<GDS2373\>\""}], 
      "]"}], ",", " ", "2"}], "]"}]}], ";"}]], "Input",
 CellChangeTimes->{{3.445569273960059*^9, 3.44556928852544*^9}, 
   3.445569363450322*^9, {3.445571479379614*^9, 3.445571486721385*^9}}],

Cell["Finally, we extract the different groups of samples.", "Text",
 CellChangeTimes->{{3.445569923117724*^9, 3.445569935117841*^9}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"subsets", " ", ":=", " ", 
   RowBox[{"Transpose", "[", "\[IndentingNewLine]", 
    RowBox[{"{", "\[IndentingNewLine]", 
     RowBox[{
      RowBox[{"data", "[", "\"\<SUBSET\>\"", "]"}], ",", 
      "\[IndentingNewLine]", 
      RowBox[{
       RowBox[{
        RowBox[{"data", "[", 
         RowBox[{"\"\<subsetDescription\>\"", ",", "#"}], "]"}], "&"}], " ", "/@",
        " ", 
       RowBox[{"data", "[", "\"\<SUBSET\>\"", "]"}]}], ",", 
      "\[IndentingNewLine]", 
      RowBox[{
       RowBox[{
        RowBox[{"StringSplit", "[", 
         RowBox[{
          RowBox[{"data", "[", 
           RowBox[{"\"\<subsetSampleId\>\"", ",", "#"}], "]"}], ",", " ", 
          "\"\<,\>\""}], "]"}], "&"}], " ", "/@", " ", 
       RowBox[{"data", "[", "\"\<SUBSET\>\"", "]"}]}]}], 
     "\[IndentingNewLine]", "}"}], "]"}]}], ";"}]], "Input",
 CellChangeTimes->{{3.445569943658009*^9, 3.44556994879943*^9}}],

Cell["\<\
As an exaple of how this information looks like, we take a look at entry \
number 2.\
\>", "Text",
 CellChangeTimes->{{3.4455699734146423`*^9, 3.4455699996405897`*^9}}],

Cell[BoxData[
 RowBox[{"subsets", "\[LeftDoubleBracket]", "2", 
  "\[RightDoubleBracket]"}]], "Input",
 CellChangeTimes->{{3.44556995269783*^9, 3.445569968771557*^9}}],

Cell["\<\
This information tells us that the patients identified by the given list of \
sample identifiers died within 1 to 2 years since the sample was taken.\
\>", "Text",
 CellChangeTimes->{{3.445570003628191*^9, 3.445570043479354*^9}, {
  3.445570101227858*^9, 3.445570201466107*^9}}]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell["Data Normalization", "Section",
 CellChangeTimes->{{3.444453015359888*^9, 3.4444530264703093`*^9}, {
  3.444453067268915*^9, 3.4444530678688602`*^9}, {3.444453156737059*^9, 
  3.444453156739233*^9}}],

Cell["\<\
Single-channel microarrays, such as the Affymetrix U133 arrays used to \
generated our data set, aim to detect the abundance of the different \
transcripts. The measurement we see in our data set is derived from the \
fluorecense level when the hybridized arrays were scanned under a laser \
scanner. Early microarray researchers noticed substantial differences in \
intensity measurements even among microarrays that were technical replicates \
hybridized against material derived from the same biological sample. \
Differences still persist despite huge improvements in the underlying \
technology. Normalization attempts to remove, by data transformation, the \
effects of any systematic sources of variation as much as possible. \
Normalization can therefore be regarded as a sort of calibration process. \
\>", "Text",
 CellChangeTimes->{{3.4451717378258123`*^9, 3.445171880079542*^9}, {
  3.445225114612329*^9, 3.44522528799074*^9}}],

Cell[CellGroupData[{

Cell["Adjusting Intensities", "Subsection",
 CellChangeTimes->{{3.4451717060267067`*^9, 3.445171713348819*^9}}],

Cell[TextData[{
 "We begin by extracting the the numerical part of the data matrix by \
dropping the two annotation columns we have been looking at previously. We \
also want to make sure that we are converting the data to a packed array in \
order to increase the efficiency of our downstream analysis. This can be \
enforced and verified using helper functions available in ",
 StyleBox["Mathematica",
  FontSlant->"Italic"],
 "'s ",
 StyleBox["Developer`",
  FontWeight->"Bold"],
 " package."
}], "Text",
 CellChangeTimes->{{3.4451719020410213`*^9, 3.4451719953153954`*^9}, {
  3.4452253401588697`*^9, 3.4452253918611393`*^9}}],

Cell[BoxData[{
 RowBox[{
  RowBox[{"eg", " ", "=", " ", 
   RowBox[{"Developer`ToPackedArray", "[", 
    RowBox[{
     RowBox[{"Drop", "[", 
      RowBox[{
       RowBox[{"Transpose", "[", "matrix", "]"}], ",", " ", "2"}], "]"}], ",",
      " ", "Real"}], "]"}]}], ";"}], "\[IndentingNewLine]", 
 RowBox[{"Developer`PackedArrayQ", "[", "eg", "]"}]}], "Input",
 CellChangeTimes->{{3.445060180023325*^9, 3.4450602270277643`*^9}, {
  3.4450602691319933`*^9, 3.44506027041017*^9}, {3.445060342795903*^9, 
  3.4450603506871758`*^9}, {3.4451720155184317`*^9, 3.44517201984391*^9}, {
  3.44517206891597*^9, 3.445172096721246*^9}, {3.445172127345104*^9, 
  3.445172130599801*^9}, {3.445172162790331*^9, 3.44517216697379*^9}, {
  3.4451721982952747`*^9, 3.4451722188442183`*^9}, {3.4451724508728237`*^9, 
  3.445172459031131*^9}, {3.4451725204048758`*^9, 3.44517254803456*^9}}],

Cell["\<\
As a first step, we take a look at how the intensity measures compare across \
the individual arrays. Usually, due to fluctuations in conducting the \
experiment, we expect to see a spread of overall brightness levels for the \
different arrays. We are depicting the distribution as histogram in \
logarithmic space.\
\>", "Text",
 CellChangeTimes->{{3.445172725096924*^9, 3.445172933364335*^9}, {
  3.445225408580708*^9, 3.4452254333554068`*^9}}],

Cell[BoxData[{
 RowBox[{
  RowBox[{"avgIntSample", " ", "=", " ", 
   RowBox[{"Mean", " ", "/@", " ", "eg"}]}], ";"}], "\n", 
 RowBox[{"Histogram", "[", 
  RowBox[{"Log10", "[", "avgIntSample", "]"}], "]"}]}], "Input",
 CellChangeTimes->{{3.44513087591226*^9, 3.445130906343799*^9}, 
   3.445131050730116*^9, 3.44517272001301*^9}],

Cell["\<\
There are several approaches how the intensities of the different arrays in \
the data set can be adjusted such that each of them possesses the same mean \
intensity after making the adjustment. The approach we are taking here is to \
compute the overall mean intensity across all rows of the matrix, and then \
apply a multiplicative adjustment across all rows. Other common choices for \
this type of procedure is to pick a constant target intensity level, or to \
use the median instead of a mean across the rows.\
\>", "Text",
 CellChangeTimes->{{3.4452254457929697`*^9, 3.445225631445917*^9}}],

Cell[BoxData[{
 RowBox[{
  RowBox[{"avgInt", " ", "=", " ", 
   RowBox[{"Mean", "[", "avgIntSample", "]"}]}], ";"}], "\n", 
 RowBox[{
  RowBox[{"scaledEg", " ", "=", 
   RowBox[{"eg", " ", "*", " ", 
    RowBox[{"(", 
     RowBox[{"avgInt", " ", "/", "avgIntSample"}], ")"}]}]}], ";"}]}], "Input",\

 CellChangeTimes->{{3.4451311308721943`*^9, 3.445131237022149*^9}, 
   3.445131733209277*^9, 3.445131764504443*^9, {3.445131956435779*^9, 
   3.445131961234149*^9}, {3.445172991606868*^9, 3.445173008444318*^9}, {
   3.445173090634403*^9, 3.4451730914562063`*^9}, {3.445173126856613*^9, 
   3.445173130958541*^9}, {3.4451731796780167`*^9, 3.445173208363679*^9}, {
   3.445173253899829*^9, 3.445173309081171*^9}, {3.445173339759823*^9, 
   3.445173344589898*^9}, {3.44517338519613*^9, 3.44517339525653*^9}, 
   3.445173501783121*^9, 3.445173621439685*^9, 3.4452256557004213`*^9}],

Cell["\<\
After this adjustment, we can verify that the mean intensity of all rows are \
the same.\
\>", "Text",
 CellChangeTimes->{{3.4452259855599957`*^9, 3.445226049599575*^9}}],

Cell[BoxData[
 RowBox[{"Equal", "[", 
  RowBox[{"Mean", " ", "/@", " ", "scaledEg"}], "]"}]], "Input",
 CellChangeTimes->{{3.445226027125246*^9, 3.445226039424342*^9}}]
}, Open  ]],

Cell[CellGroupData[{

Cell["Quantile Normalization", "Subsection",
 CellChangeTimes->{{3.4452210308756857`*^9, 3.445221035483951*^9}}],

Cell[TextData[{
 "A useful visualization to determine differences across intensity measures \
is a logarithmic comparison plot. For this type of visualization, we convert \
the intensity data for two samples into a logarithmic scale, and use the \
resulting values as (x,y) coordinates on a gene-by-gene basis. We will \
discuss the purpose of the logarithmic transformation in the ",
 ButtonBox["sub-section on computing log ratios",
  BaseStyle->"Hyperlink",
  ButtonData->"ComputeLogRatios"],
 "."
}], "Text",
 CellChangeTimes->{{3.445226470541975*^9, 3.445226653980196*^9}, {
  3.4452267127583027`*^9, 3.4452267353236*^9}}],

Cell[BoxData[
 RowBox[{
  RowBox[{
   RowBox[{"comparePlot", "[", 
    RowBox[{"x_", ",", " ", "y_", ",", " ", "label_"}], "]"}], " ", ":=", " ", 
   RowBox[{"ListPlot", "[", 
    RowBox[{
     RowBox[{"Transpose", "[", 
      RowBox[{"Log10", "[", 
       RowBox[{"{", 
        RowBox[{"x", ",", " ", "y"}], "}"}], "]"}], "]"}], ",", 
     RowBox[{"PlotRange", "\[Rule]", " ", 
      RowBox[{"{", 
       RowBox[{
        RowBox[{"{", 
         RowBox[{
          RowBox[{"-", "0.5"}], ",", " ", "5"}], "}"}], ",", " ", 
        RowBox[{"{", 
         RowBox[{
          RowBox[{"-", "0.5"}], ",", " ", "5"}], "}"}]}], "}"}]}], ",", " ", 
     RowBox[{"AspectRatio", " ", "\[Rule]", " ", "1"}], ",", " ", 
     RowBox[{"PlotLabel", "\[Rule]", "label"}]}], "]"}]}], ";"}]], "Input",
 CellChangeTimes->{{3.445132047621623*^9, 3.4451320668337097`*^9}, {
   3.445132110863895*^9, 3.445132256355295*^9}, {3.445132339626829*^9, 
   3.445132349316573*^9}, {3.445132411889077*^9, 3.445132422352487*^9}, {
   3.445132466701908*^9, 3.445132486859535*^9}, {3.445132516946886*^9, 
   3.445132529843162*^9}, {3.445132622318283*^9, 3.44513263250739*^9}, {
   3.445220314430546*^9, 3.445220360403242*^9}, {3.4452206144484463`*^9, 
   3.4452206677237167`*^9}, {3.445220841975885*^9, 3.445220868099527*^9}, 
   3.445309767825376*^9}],

Cell[BoxData[
 RowBox[{"comparePlot", "[", 
  RowBox[{
   RowBox[{"scaledEg", "\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}],
    ",", 
   RowBox[{
   "scaledEg", "\[LeftDoubleBracket]", "10", "\[RightDoubleBracket]"}], ",", 
   " ", "\"\<Scaled Data\>\""}], "]"}]], "Input",
 CellChangeTimes->{{3.445132047621623*^9, 3.4451320668337097`*^9}, {
   3.445132110863895*^9, 3.445132256355295*^9}, {3.445132339626829*^9, 
   3.445132349316573*^9}, {3.445132411889077*^9, 3.445132422352487*^9}, {
   3.445132466701908*^9, 3.445132486859535*^9}, {3.445132516946886*^9, 
   3.445132529843162*^9}, {3.445132622318283*^9, 3.44513263250739*^9}, {
   3.445220314430546*^9, 3.445220360403242*^9}, {3.4452206144484463`*^9, 
   3.4452206677237167`*^9}, {3.445220841975885*^9, 3.445220868099527*^9}, 
   3.445309767825376*^9}],

Cell[TextData[{
 "As we look at this plot more carefully, we observe the the data points show \
somewhat of a spread around the ",
 StyleBox["x = y", "InlineFormula"],
 " diagonal. Particularly in the lower left corner, corresponding to the low \
intensity range in both samples, we see what looks a lot like additive noise. \
It is a common working assumption for microarray analysis that the majority \
of genes should behave more or less the same across the different samples. If \
this assumption were satisfied, we would expect to see the same distribution \
of intensities across the different rows of the matrix. A good way to look at \
this aspect is to use a quantile plot, which we are generating here on a \
random subset of the samples."
}], "Text",
 CellChangeTimes->{{3.445226749183008*^9, 3.4452268220533953`*^9}, {
  3.445226856325508*^9, 3.445227146254434*^9}}],

Cell[BoxData[{
 RowBox[{
  RowBox[{
   RowBox[{"quantilePlot", "[", "vec_", "]"}], " ", ":=", " ", 
   RowBox[{"ListPlot", "[", 
    RowBox[{"Transpose", "[", 
     RowBox[{"{", 
      RowBox[{
       RowBox[{"Range", "[", 
        RowBox[{"Length", "[", "vec", "]"}], "]"}], ",", 
       RowBox[{"Sort", "[", "vec", "]"}]}], "}"}], "]"}], "]"}]}], 
  ";"}], "\n", 
 RowBox[{"Show", "[", 
  RowBox[{"GraphicsGrid", "[", 
   RowBox[{"{", 
    RowBox[{"quantilePlot", " ", "/@", " ", 
     RowBox[{"RandomChoice", "[", 
      RowBox[{"scaledEg", ",", " ", "4"}], "]"}]}], "}"}], "]"}], 
  "]"}]}], "Input",
 CellChangeTimes->{{3.4451740822470007`*^9, 3.445174105896078*^9}, {
   3.4451741800888453`*^9, 3.445174233955222*^9}, {3.445174297675125*^9, 
   3.445174301560478*^9}, {3.4451760986815987`*^9, 3.4451761297494383`*^9}, 
   3.445226454916235*^9}],

Cell["\<\
We can see visible differences in the slopes across the different plots. In \
the literature we can find quite a range of suggestions on when and how to \
address these differences in distribution. While more advanced methods are \
based on linear and mixed models that get adjusted against a reference data \
set, a very easy and straightforward procedure is to perform a quantile \
normalization.\
\>", "Text",
 CellChangeTimes->{{3.445227186453641*^9, 3.445227346634544*^9}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"meanProfile", " ", "=", " ", 
   RowBox[{"Mean", "[", "scaledEg", "]"}]}], ";"}]], "Input",
 CellChangeTimes->{{3.4452189846350117`*^9, 3.445219006962296*^9}, 
   3.4452211387967443`*^9, 3.4453109584067*^9}],

Cell[BoxData[
 RowBox[{"quantilePlot", "[", "meanProfile", "]"}]], "Input",
 CellChangeTimes->{{3.4452189846350117`*^9, 3.445219006962296*^9}, 
   3.4452211387967443`*^9, 3.4453109584067*^9}],

Cell[BoxData[{
 RowBox[{
  RowBox[{"invOrders", " ", "=", " ", 
   RowBox[{"Ordering", " ", "/@", " ", 
    RowBox[{"(", 
     RowBox[{"Ordering", " ", "/@", " ", "scaledEg"}], ")"}]}]}], 
  ";"}], "\[IndentingNewLine]", 
 RowBox[{
  RowBox[{"refDistribution", " ", "=", " ", 
   RowBox[{"Sort", "[", "meanProfile", "]"}]}], ";"}], "\n", 
 RowBox[{
  RowBox[{
   RowBox[{"reOrder", "[", 
    RowBox[{"vec_", ",", " ", "order_"}], "]"}], " ", ":=", " ", 
   RowBox[{
   "vec", "\[LeftDoubleBracket]", "order", "\[RightDoubleBracket]"}]}], 
  ";"}], "\[IndentingNewLine]", 
 RowBox[{
  RowBox[{"egNormalized", " ", "=", " ", 
   RowBox[{
    RowBox[{
     RowBox[{"reOrder", "[", 
      RowBox[{"refDistribution", ",", " ", "#"}], "]"}], "&"}], " ", "/@", 
    " ", "invOrders"}]}], ";"}]}], "Input",
 CellChangeTimes->{{3.445219113508012*^9, 3.445219156526469*^9}, {
   3.4452193147627783`*^9, 3.445219385815338*^9}, 3.4452214204048977`*^9}],

Cell[BoxData[
 RowBox[{
  RowBox[{"Ordering", "[", 
   RowBox[{
   "scaledEg", "\[LeftDoubleBracket]", "100", "\[RightDoubleBracket]"}], 
   "]"}], " ", "\[Equal]", " ", 
  RowBox[{"Ordering", "[", 
   RowBox[{
   "egNormalized", "\[LeftDoubleBracket]", "100", "\[RightDoubleBracket]"}], 
   "]"}]}]], "Input",
 CellChangeTimes->{{3.445219851866723*^9, 3.4452199157921124`*^9}}],

Cell["\<\
We can compare the spread of the data before and after performing the \
quantile normalization side-by-side. As we can see, the quantile-normalized \
data looks significantly \"tighter\" than the data with just the mean \
intensities adjusted. In particular, a lot of variability in the low \
intensity range, the lower left corner of the plot, has been removed.\
\>", "Text",
 CellChangeTimes->{{3.445227361406436*^9, 3.44522746776064*^9}}],

Cell[BoxData[
 RowBox[{"Show", "[", 
  RowBox[{"GraphicsGrid", "[", 
   RowBox[{"{", 
    RowBox[{"{", 
     RowBox[{
      RowBox[{"comparePlot", "[", 
       RowBox[{
        RowBox[{
        "scaledEg", "\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}], 
        ",", " ", 
        RowBox[{
        "scaledEg", "\[LeftDoubleBracket]", "10", "\[RightDoubleBracket]"}], 
        ",", " ", "\"\<Scaled Data\>\""}], "]"}], ",", "\[IndentingNewLine]", 
      
      RowBox[{"comparePlot", "[", 
       RowBox[{
        RowBox[{
        "egNormalized", "\[LeftDoubleBracket]", "1", 
         "\[RightDoubleBracket]"}], ",", " ", 
        RowBox[{
        "egNormalized", "\[LeftDoubleBracket]", "10", 
         "\[RightDoubleBracket]"}], ",", " ", 
        "\"\<Scaled and Quantile Normalized Data\>\""}], "]"}]}], "}"}], 
    "}"}], "]"}], "]"}]], "Input",
 CellChangeTimes->{{3.445132047621623*^9, 3.4451320668337097`*^9}, {
  3.445132110863895*^9, 3.445132256355295*^9}, {3.445132339626829*^9, 
  3.445132349316573*^9}, {3.445132411889077*^9, 3.445132422352487*^9}, {
  3.445132466701908*^9, 3.445132486859535*^9}, {3.445132516946886*^9, 
  3.445132529843162*^9}, {3.445132622318283*^9, 3.44513263250739*^9}, {
  3.44521995091157*^9, 3.4452199530713243`*^9}, {3.44521999894046*^9, 
  3.4452200054505672`*^9}, {3.445220036237561*^9, 3.445220036459325*^9}, {
  3.44522037288308*^9, 3.445220438595421*^9}, {3.445220748881733*^9, 
  3.44522076025494*^9}, {3.445220887150642*^9, 3.44522089973733*^9}}]
}, Open  ]],

Cell[CellGroupData[{

Cell["Computing Log Ratio Data", "Subsection",
 CellChangeTimes->{{3.445221053500684*^9, 3.4452210630429697`*^9}},
 CellTags->"ComputeLogRatios"],

Cell["\<\
For statistical analysis and unsupervised learning methods, such as \
clustering, it is advisable to stabilize the variation of the normalized \
intensities. The easiest way to accomplish this is to perform a logarithmic \
transformation on the data set.\
\>", "Text",
 CellChangeTimes->{{3.4452218201517763`*^9, 3.445221878193837*^9}, {
   3.4452219322250767`*^9, 3.4452221722038393`*^9}, 3.445223450858032*^9}],

Cell[BoxData[
 RowBox[{
  RowBox[{"logIntensity", " ", "=", " ", 
   RowBox[{"Log10", "[", "egNormalized", "]"}]}], ";"}]], "Input",
 CellChangeTimes->{{3.4452234539645853`*^9, 3.445223476969842*^9}}],

Cell["\<\
 A second option is compute log ratio values against a reference profile, \
which not only stabilzes variation but also introduces the notion of up- or \
down-regulated genes. In our given study, no aditional non-disease state \
samples were included in the data set. In this case, a viable approach to \
analyze the data is to compare against a virtual pooled reference, which we \
already computed as meanProfile when performing quantile normalization.\
\>", "Text",
 CellChangeTimes->{{3.4452218201517763`*^9, 3.445221878193837*^9}, {
   3.4452219322250767`*^9, 3.4452221722038393`*^9}, 3.445223450858032*^9}],

Cell[BoxData[{
 RowBox[{
  RowBox[{"logRatio", " ", "=", " ", 
   RowBox[{
    RowBox[{
     RowBox[{"Subtract", "[", 
      RowBox[{"#", ",", " ", 
       RowBox[{"Log10", "[", "meanProfile", "]"}]}], "]"}], "&"}], " ", "/@", 
    " ", "logIntensity"}]}], ";"}], "\[IndentingNewLine]", 
 RowBox[{
  RowBox[{"logAvgIntensity", " ", "=", " ", 
   RowBox[{
    RowBox[{
     RowBox[{
      FractionBox["1", "2"], " ", 
      RowBox[{"Plus", "[", 
       RowBox[{"#", ",", " ", 
        RowBox[{"Log10", "[", "meanProfile", "]"}]}], "]"}]}], "&"}], " ", "/@",
     " ", "logIntensity"}]}], ";"}]}], "Input",
 CellChangeTimes->{{3.445222184752081*^9, 3.445222231722884*^9}, {
  3.4452222733722982`*^9, 3.445222283424967*^9}, {3.4452223159539537`*^9, 
  3.44522231999965*^9}, {3.445223491819076*^9, 3.445223611204198*^9}, {
  3.445223767167693*^9, 3.445223768878439*^9}}],

Cell[TextData[{
 "A more thorough discussion of the transformation can be found in the \
methodology discussion by Sharov et al. (2004). A common visualization is the \
so-called log-ratio plot, which uses the geometric mean of the intensity of \
sample and baseline as x coordinate, and shows the log ratio value on the \
y-axis. In the plot below we added demarkation lines for a fold-change of 2, \
corresponding to a value of ",
 Cell[BoxData[
  FormBox[
   RowBox[{
    RowBox[{"\[PlusMinus]", 
     SubscriptBox["log", "10"]}], "2", " "}], TraditionalForm]],
  FormatType->"TraditionalForm"],
 ". A fold-change of 2 is a common criterion for genes that are considered to \
behave significantly different between two samples. Genes having a log ratio \
\[GreaterSlantEqual]",
 Cell[BoxData[
  RowBox[{
   SubscriptBox["log", "10"], "2"}]]],
 " are considered up-regulated, and genes having a log ratio \
\[LessSlantEqual]",
 Cell[BoxData[
  RowBox[{
   SubscriptBox["log", "10"], "2"}]]],
 " are considered down-regulated."
}], "Text",
 CellChangeTimes->{{3.4452264000252333`*^9, 3.4452264283677197`*^9}, {
  3.445227484221595*^9, 3.445227614302615*^9}, {3.445227651629073*^9, 
  3.445227775170183*^9}}],

Cell[BoxData[{
 RowBox[{
  RowBox[{
   RowBox[{"ratioPlot", "[", 
    RowBox[{"x_", ",", " ", "y_", ",", " ", "label_"}], "]"}], " ", ":=", " ", 
   RowBox[{"ListPlot", "[", 
    RowBox[{
     RowBox[{"Transpose", "[", 
      RowBox[{"{", 
       RowBox[{"x", ",", " ", "y"}], "}"}], "]"}], ",", 
     RowBox[{"PlotRange", "\[Rule]", " ", 
      RowBox[{"{", 
       RowBox[{
        RowBox[{"{", 
         RowBox[{
          RowBox[{"-", "0.5"}], ",", " ", "5"}], "}"}], ",", " ", 
        RowBox[{"{", 
         RowBox[{
          RowBox[{"-", "2.0"}], ",", " ", "2.0"}], "}"}]}], "}"}]}], ",", " ", 
     RowBox[{"AspectRatio", " ", "\[Rule]", " ", "1"}], ",", " ", 
     RowBox[{"PlotLabel", "\[Rule]", "label"}], ",", " ", 
     RowBox[{"Epilog", "->", 
      RowBox[{"{", 
       RowBox[{"Red", ",", " ", 
        RowBox[{"Line", "[", 
         RowBox[{"{", 
          RowBox[{
           RowBox[{"{", 
            RowBox[{
             RowBox[{"-", "0.5"}], ",", " ", 
             RowBox[{"Log10", "[", "2", "]"}]}], "}"}], ",", " ", 
           RowBox[{"{", 
            RowBox[{"5", ",", " ", 
             RowBox[{"Log10", "[", "2", "]"}]}], "}"}]}], "}"}], "]"}], ",", 
        " ", "Red", ",", " ", 
        RowBox[{"Line", "[", 
         RowBox[{"{", 
          RowBox[{
           RowBox[{"{", 
            RowBox[{
             RowBox[{"-", "0.5"}], ",", " ", 
             RowBox[{"-", 
              RowBox[{"Log10", "[", "2", "]"}]}]}], "}"}], ",", " ", 
           RowBox[{"{", 
            RowBox[{"5", ",", " ", 
             RowBox[{"-", 
              RowBox[{"Log10", "[", "2", "]"}]}]}], "}"}]}], "}"}], "]"}]}], 
       "}"}]}]}], "]"}]}], ";"}], "\[IndentingNewLine]", 
 RowBox[{"ratioPlot", "[", 
  RowBox[{
   RowBox[{
   "logAvgIntensity", "\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}], 
   ",", " ", 
   RowBox[{"logRatio", "\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}],
    ",", " ", "\"\<Log Ratio Plot\>\""}], "]"}]}], "Input",
 CellChangeTimes->{{3.44522229062563*^9, 3.4452222984224787`*^9}, {
  3.445223638078148*^9, 3.445223745982768*^9}, {3.445223782246526*^9, 
  3.445223787188723*^9}, {3.445223905568378*^9, 3.445223916734722*^9}, {
  3.445223968727313*^9, 3.4452240506588287`*^9}, {3.445224134191635*^9, 
  3.44522415174986*^9}, {3.4452243336196003`*^9, 3.445224338385054*^9}, {
  3.445224388048627*^9, 3.445224459013056*^9}, {3.445224507746769*^9, 
  3.445224509242034*^9}, {3.445224578864278*^9, 3.445224587655407*^9}, {
  3.445224647461638*^9, 3.445224662021122*^9}}],

Cell["\<\
In the following sections we will start to search for patterns in genes and \
samples across the complete data set. We will base these analyses on the \
normalized data sets we just computed.\
\>", "Text",
 CellChangeTimes->{{3.445227982987714*^9, 3.44522807907703*^9}}]
}, Open  ]],

Cell[CellGroupData[{

Cell["Persisting the Data Matrix", "Subsection",
 CellChangeTimes->{{3.445392828920495*^9, 3.4453928356985703`*^9}}],

Cell["\<\
At this point, we persist all the data we will need for our subsequent data \
analysis: The normalized log-intensity values, the log-ratio values, the \
corresponding sample and gene identifiers, and the definition of the \
different series that identify the relevant phenotypic subsets of the \
samples. To do so, we simply create a list, which we then write to the file \
system.\
\>", "Text",
 CellChangeTimes->{{3.445392849249385*^9, 3.445392869900092*^9}, {
  3.445568928091352*^9, 3.4455690957468643`*^9}}],

Cell[BoxData[{
 RowBox[{
  RowBox[{"analysisData", " ", "=", " ", "\[IndentingNewLine]", 
   RowBox[{"{", "\[IndentingNewLine]", 
    RowBox[{
    "logIntensity", ",", "\[IndentingNewLine]", "logRatio", ",", 
     "\[IndentingNewLine]", "logAvgIntensity", ",", "\[IndentingNewLine]", 
     "geneIDs", ",", "\[IndentingNewLine]", "sampleIDs", ",", 
     "\[IndentingNewLine]", "subsets"}], "\[IndentingNewLine]", "}"}]}], 
  ";"}], "\[IndentingNewLine]", 
 RowBox[{
  RowBox[{"DumpSave", "[", 
   RowBox[{"\"\<GDS2373.mx\>\"", ",", " ", "analysisData"}], "]"}], 
  ";"}]}], "Input",
 CellChangeTimes->{{3.4455691002464533`*^9, 3.445569132618719*^9}, {
   3.445569183145747*^9, 3.445569186561439*^9}, {3.44556921804134*^9, 
   3.4455692611100807`*^9}, {3.445569372164146*^9, 3.445569433438941*^9}, {
   3.445570211613987*^9, 3.445570213156505*^9}, 3.445570704134625*^9}],

Cell["The result Mathematica dump file is about 66.7 MB in size.", "Text",
 CellChangeTimes->{{3.445570730003619*^9, 3.44557074589647*^9}}]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell["Next Steps and Further Reading", "Section",
 CellChangeTimes->{{3.444453413580114*^9, 3.44445342674747*^9}, {
  3.444454006056712*^9, 3.444454008584454*^9}, {3.445392880949189*^9, 
  3.445392889741665*^9}}],

Cell[CellGroupData[{

Cell["Next Steps", "Subsection",
 CellChangeTimes->{{3.445392897366765*^9, 3.445392898951851*^9}}],

Cell["\<\
In the next part of this tutrial series we will apply exploratory analysis \
methods to our data sets. In particular, we will use principal component \
analysis (PCA) and clustering algorithms to identify relevant patterns of \
interest in our data. We will visualize PCA results as 3-dimensional plots, \
and we will create dendograms and heat maps to represent the result of \
clustering.\
\>", "Text",
 CellChangeTimes->{{3.445392906499016*^9, 3.445392956970704*^9}, {
  3.445570464594316*^9, 3.445570539867119*^9}}]
}, Open  ]],

Cell[CellGroupData[{

Cell["Further reading", "Subsection",
 CellChangeTimes->{{3.445392660117527*^9, 3.445392662367794*^9}}],

Cell["Microarrays in general", "Text",
 CellChangeTimes->{{3.445392678264183*^9, 3.4453926846797*^9}}],

Cell["\<\
Data formats (MAGE, MIAME, MiniML, SOFT, MAGE-TAB, ISA-TAB, Affy SDK)\
\>", "Text",
 CellChangeTimes->{{3.445392678264183*^9, 3.44539270790241*^9}, {
  3.445392792037457*^9, 3.445392817898663*^9}}],

Cell["\<\
Data normalization (invariant set method, Schadt method, loess, median \
polish, error model intro, Li & Wong, RMA, gcRMA)\
\>", "Text",
 CellChangeTimes->{{3.445392678264183*^9, 3.4453927803967323`*^9}}]
}, Open  ]],

Cell[CellGroupData[{

Cell["References", "Subsection",
 CellChangeTimes->{{3.4449222013566933`*^9, 3.444922202799799*^9}}],

Cell[TextData[{
 "Brazma, A. et al. (2001). \"Minimum information about a microarray \
experiment (MIAME) - toward standards for microarray data\". ",
 StyleBox["Nat Genet.",
  FontSlant->"Italic"],
 " Dec 29 (4) : 365 - 71. "
}], "Text",
 CellChangeTimes->{{3.444884398141645*^9, 3.444884482709195*^9}, {
  3.444884523382572*^9, 3.444884527364802*^9}}],

Cell[TextData[{
 "Lashkari, D. A. et al. (1997).\"Yeast microarrays for genome wide parallel \
genetic and gene expression analysis\". ",
 StyleBox["Proc Natl Acad Sci USA",
  FontSlant->"Italic"],
 " 94 : 13057 \[Dash]13062."
}], "Text",
 CellChangeTimes->{{3.4448872914019413`*^9, 3.4448873186145573`*^9}}],

Cell["\<\
Raponi, M. et al. (2006). \"Gene expression signatures for predicting \
prognosis of squamous cell and adenocarcinomas of the lung\". Cancer Res. \
2006 Aug 1;66(15):7466-72.\
\>", "Text",
 CellChangeTimes->{{3.445168211165189*^9, 3.445168300946933*^9}}],

Cell[TextData[{
 "Schena, M. et al. (1995). \"Quantitative monitoring of gene expression \
patterns with a complementary DNA microarray\". ",
 StyleBox["Science",
  FontSlant->"Italic"],
 " 270 : 467 \[Dash]470."
}], "Text",
 CellChangeTimes->{{3.444887221750309*^9, 3.444887227651671*^9}, {
  3.444887306438806*^9, 3.4448873091587343`*^9}, {3.445226305831114*^9, 
  3.445226309270632*^9}}],

Cell[TextData[{
 "Sharov, V. et al. (2004). \"The limits of log-ratios\".",
 StyleBox[" BMC Biotechnology",
  FontSlant->"Italic"],
 " vol. 4 (1) pp. 3"
}], "Text",
 CellChangeTimes->{{3.445226276488089*^9, 3.445226360605838*^9}}]
}, Open  ]],

Cell[CellGroupData[{

Cell["Links", "Subsection",
 CellChangeTimes->{{3.444922226882545*^9, 3.4449222275050173`*^9}}],

Cell[TextData[{
 "NCBI SOFT File Format Description available at ",
 ButtonBox["http://www.ncbi.nlm.nih.gov/projects/geo/info/soft2.html",
  BaseStyle->"Hyperlink",
  ButtonData->{
    URL["http://www.ncbi.nlm.nih.gov/projects/geo/info/soft2.html"], None},
  ButtonNote->"http://www.ncbi.nlm.nih.gov/projects/geo/info/soft2.html"],
 "."
}], "Text",
 CellChangeTimes->{{3.4449222450865173`*^9, 3.444922298430645*^9}}],

Cell[TextData[{
 StyleBox["The author can be contacted via email: ",
  FontSlant->"Italic"],
 ButtonBox["hwill@acm.org",
  BaseStyle->"Hyperlink",
  ButtonData->{
    URL["mailto:hwill@acm.org"], None},
  ButtonNote->"mailto:hwill@acm.org"],
 StyleBox[".",
  FontSlant->"Italic"]
}], "Text",
 CellChangeTimes->{{3.444954375605266*^9, 3.44495441355757*^9}, {
  3.444954451426589*^9, 3.4449544980252037`*^9}}]
}, Open  ]]
}, Open  ]]
}, Open  ]]
},
WindowSize->{961, 827},
WindowMargins->{{-4, Automatic}, {Automatic, 0}},
PrintingCopies->1,
PrintingPageRange->{1, Automatic},
PrintingOptions->{"PaperOrientation"->"Portrait"},
ShowSelection->True,
CellLabelAutoDelete->True,
FrontEndVersion->"7.0 for Mac OS X x86 (32-bit) (January 30, 2009)",
StyleDefinitions->FrontEnd`FileName[{"Creative"}, "NaturalColor.nb", 
  CharacterEncoding -> "UTF-8"]
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{
 "ComputeLogRatios"->{
  Cell[40135, 998, 145, 2, 34, "Subsection",
   CellTags->"ComputeLogRatios"]}
 }
*)
(*CellTagsIndex
CellTagsIndex->{
 {"ComputeLogRatios", 52927, 1339}
 }
*)
(*NotebookFileOutline
Notebook[{
Cell[CellGroupData[{
Cell[567, 22, 120, 1, 66, "Title"],
Cell[690, 25, 171, 2, 31, "Subtitle"],
Cell[864, 29, 48, 0, 25, "Subsubtitle"],
Cell[915, 31, 1281, 25, 56, "Text"],
Cell[2199, 58, 2084, 39, 45, "Text"],
Cell[CellGroupData[{
Cell[4308, 101, 198, 3, 72, "Section"],
Cell[CellGroupData[{
Cell[4531, 108, 117, 1, 34, "Subsection"],
Cell[4651, 111, 681, 11, 71, "Text"],
Cell[5335, 124, 556, 9, 56, "Text"],
Cell[5894, 135, 844, 13, 86, "Text"],
Cell[6741, 150, 612, 9, 71, "Text"]
}, Open  ]],
Cell[CellGroupData[{
Cell[7390, 164, 110, 1, 34, "Subsection"],
Cell[7503, 167, 1581, 25, 116, "Text"]
}, Open  ]],
Cell[CellGroupData[{
Cell[9121, 197, 124, 1, 34, "Subsection"],
Cell[9248, 200, 349, 7, 26, "Text"],
Cell[9600, 209, 225, 4, 37, "Input"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[9874, 219, 114, 1, 72, "Section"],
Cell[CellGroupData[{
Cell[10013, 224, 150, 2, 34, "Subsection"],
Cell[10166, 228, 1146, 20, 71, "Text"],
Cell[11315, 250, 510, 8, 41, "Text"]
}, Open  ]],
Cell[CellGroupData[{
Cell[11862, 263, 163, 2, 34, "Subsection"],
Cell[12028, 267, 375, 7, 41, "Text"],
Cell[CellGroupData[{
Cell[12428, 278, 99, 1, 24, "Subsubsection"],
Cell[12530, 281, 313, 8, 26, "Text"]
}, Open  ]],
Cell[CellGroupData[{
Cell[12880, 294, 99, 1, 24, "Subsubsection"],
Cell[12982, 297, 392, 11, 41, "Text"]
}, Open  ]],
Cell[CellGroupData[{
Cell[13411, 313, 97, 1, 24, "Subsubsection"],
Cell[13511, 316, 471, 14, 41, "Text"]
}, Open  ]],
Cell[CellGroupData[{
Cell[14019, 335, 97, 1, 24, "Subsubsection"],
Cell[14119, 338, 88, 1, 26, "Text"]
}, {3}]],
Cell[CellGroupData[{
Cell[14241, 344, 98, 1, 24, "Subsubsection"],
Cell[14342, 347, 1065, 30, 71, "Text"]
}, Open  ]],
Cell[CellGroupData[{
Cell[15444, 382, 98, 1, 24, "Subsubsection"],
Cell[15545, 385, 380, 13, 26, "Text"],
Cell[15928, 400, 559, 9, 56, "Text"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[16536, 415, 157, 2, 34, "Subsection"],
Cell[16696, 419, 354, 9, 26, "Text"],
Cell[17053, 430, 132, 2, 37, "Input"],
Cell[17188, 434, 930, 21, 56, "Text"],
Cell[18121, 457, 313, 7, 37, "Input"],
Cell[18437, 466, 248, 5, 26, "Text"],
Cell[18688, 473, 969, 20, 113, "Input"],
Cell[19660, 495, 416, 10, 41, "Text"],
Cell[20079, 507, 322, 7, 37, "Input"],
Cell[20404, 516, 203, 4, 26, "Text"],
Cell[20610, 522, 295, 6, 37, "Input"],
Cell[20908, 530, 171, 4, 26, "Text"],
Cell[21082, 536, 340, 7, 37, "Input"],
Cell[21425, 545, 279, 5, 26, "Text"],
Cell[21707, 552, 615, 15, 53, "Input"],
Cell[22325, 569, 578, 10, 56, "Text"],
Cell[22906, 581, 374, 9, 37, "Input"],
Cell[23283, 592, 345, 6, 41, "Text"],
Cell[23631, 600, 396, 9, 37, "Input"],
Cell[24030, 611, 134, 1, 26, "Text"],
Cell[24167, 614, 939, 24, 113, "Input"],
Cell[25109, 640, 178, 4, 26, "Text"],
Cell[25290, 646, 167, 3, 37, "Input"],
Cell[25460, 651, 288, 5, 26, "Text"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[25797, 662, 205, 3, 72, "Section"],
Cell[26005, 667, 949, 14, 101, "Text"],
Cell[CellGroupData[{
Cell[26979, 685, 111, 1, 34, "Subsection"],
Cell[27093, 688, 630, 14, 56, "Text"],
Cell[27726, 704, 868, 16, 53, "Input"],
Cell[28597, 722, 457, 8, 41, "Text"],
Cell[29057, 732, 330, 7, 53, "Input"],
Cell[29390, 741, 608, 9, 71, "Text"],
Cell[30001, 752, 877, 17, 53, "Input"],
Cell[30881, 771, 180, 4, 26, "Text"],
Cell[31064, 777, 168, 3, 37, "Input"]
}, Open  ]],
Cell[CellGroupData[{
Cell[31269, 785, 112, 1, 34, "Subsection"],
Cell[31384, 788, 627, 12, 56, "Text"],
Cell[32014, 802, 1317, 29, 53, "Input"],
Cell[33334, 833, 818, 15, 37, "Input"],
Cell[34155, 850, 878, 14, 86, "Text"],
Cell[35036, 866, 850, 22, 53, "Input"],
Cell[35889, 890, 488, 8, 56, "Text"],
Cell[36380, 900, 242, 5, 37, "Input"],
Cell[36625, 907, 191, 3, 37, "Input"],
Cell[36819, 912, 940, 25, 83, "Input"],
Cell[37762, 939, 378, 10, 37, "Input"],
Cell[38143, 951, 451, 7, 56, "Text"],
Cell[38597, 960, 1501, 33, 53, "Input"]
}, Open  ]],
Cell[CellGroupData[{
Cell[40135, 998, 145, 2, 34, "Subsection",
 CellTags->"ComputeLogRatios"],
Cell[40283, 1002, 422, 7, 41, "Text"],
Cell[40708, 1011, 200, 4, 37, "Input"],
Cell[40911, 1017, 622, 9, 56, "Text"],
Cell[41536, 1028, 866, 22, 72, "Input"],
Cell[42405, 1052, 1208, 28, 95, "Text"],
Cell[43616, 1082, 2531, 62, 83, "Input"],
Cell[46150, 1146, 280, 5, 41, "Text"]
}, Open  ]],
Cell[CellGroupData[{
Cell[46467, 1156, 116, 1, 34, "Subsection"],
Cell[46586, 1159, 522, 9, 56, "Text"],
Cell[47111, 1170, 868, 17, 173, "Input"],
Cell[47982, 1189, 139, 1, 26, "Text"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[48170, 1196, 212, 3, 72, "Section"],
Cell[CellGroupData[{
Cell[48407, 1203, 98, 1, 34, "Subsection"],
Cell[48508, 1206, 529, 9, 56, "Text"]
}, Open  ]],
Cell[CellGroupData[{
Cell[49074, 1220, 103, 1, 34, "Subsection"],
Cell[49180, 1223, 102, 1, 26, "Text"],
Cell[49285, 1226, 207, 4, 26, "Text"],
Cell[49495, 1232, 214, 4, 26, "Text"]
}, Open  ]],
Cell[CellGroupData[{
Cell[49746, 1241, 100, 1, 34, "Subsection"],
Cell[49849, 1244, 353, 8, 41, "Text"],
Cell[50205, 1254, 308, 7, 26, "Text"],
Cell[50516, 1263, 264, 5, 41, "Text"],
Cell[50783, 1270, 390, 9, 26, "Text"],
Cell[51176, 1281, 230, 6, 26, "Text"]
}, Open  ]],
Cell[CellGroupData[{
Cell[51443, 1292, 95, 1, 34, "Subsection"],
Cell[51541, 1295, 416, 9, 26, "Text"],
Cell[51960, 1306, 407, 12, 26, "Text"]
}, Open  ]]
}, Open  ]]
}, Open  ]]
}
]
*)

(* End of internal cache information *)
